const path = require('path');
const { CleanWebpackPlugin } = require("clean-webpack-plugin");
const glob = require('glob');
// const webpack = require('webpack');

module.exports = {
    devtool: "(none)",
    //在entry中添加入口
    entry: {
        index: ['./src/Test.ts'],
        testB: glob.sync("./src/b/*.ts"),
        testC: glob.sync("./src/c/*.ts"),
        // testB: ['./src/b/TestB.ts'],
        // testC: ['./src/c/TestC.ts'],
    },
    module: {
        rules: [
            {
                test: /\.tsx?$/,
                use: 'ts-loader',
                exclude: /node_modules/
            }
        ]
    },
    //  用来配置应用层的模块解析，即要被打包的模块
    resolve: {
        //  第一项扩展非常重要，千万不要忽略，否则经常出现模块无法加载错误
        extensions: ['.ts', '.tsx']
    },
    //在plugins中配置
    plugins: [
        // new webpack.HashedModuleIdsPlugin(), // 根据模块的相对路径生成 HASH 作为模块 ID
        // new webpack.NoEmitOnErrorsPlugin(), // 忽略错误信息
        // new webpack.ContextReplacementPlugin(// 忽略warning提示
        //     /angular(\\|\/)core/,
        //     path.resolve(__dirname, './')
        // ),
        //删除dist目录
        new CleanWebpackPlugin({
            // outputPath: path.resolve(__dirname, '../'), //根目录
            // verbose Write logs to console.
            verbose: true, //开启在控制台输出信息
            // dry Use boolean "true" to test/emulate delete. (will not remove files).
            // Default: false - remove files
            dry: false,
        }),
    ],
    optimization: {
        // splitChunks: {// 此分包模式 适用于大项目将一个整体分隔成几块  各自按需加载
            // chunks: 'all',//initial(初始块)、async(按需加载块)、all(全部块)，默认为all
            // minSize: 0,//分隔模块最小大小
            // minChunks: 1,//最少被引用次数
            // maxAsyncRequests: 10,//异步请求的chunks不应该超过此值
            // maxInitialRequests: 5,//最大的初始化加载次数，默认为 3；
            // automaticNameDelimiter: '_',//自动命名连接符
            // cacheGroups: {
                // vendors: {
                //     test: /[\\/]node_modules[\\/]/,// 使用正则匹配
                //     minChunks: 1,//敲黑板  最少被引用次数
                //     priority: -10//优先级，先打包到哪个组里面，值越大，优先级越高
                // },
            //     default: {
            //         test: /[\\/]src[\\/]/,// 使用正则匹配
            //         minChunks: 2,//敲黑板  最少被引用次数
            //         priority: -20,//优先级，先打包到哪个组里面，值越大，优先级越高
            //         reuseExistingChunk: true
            //     },
                // testB: {
                //     name: "testB",
                //     // test: /[\\/]src[\\/]b[\\/]/,// 使用正则匹配
                //     test: function(m) {
                //         console.log(m.context, /[\\/]src[\\/]b/.test(m.context));
                //         return /[\\/]src[\\/]b/.test(m.context)
                //     },
                //     minChunks: 1,//敲黑板  最少被引用次数
                //     priority: -10,//优先级，先打包到哪个组里面，值越大，优先级越高
                //     reuseExistingChunk: true
                // },
                // testC: {
                //     name: "testC",
                //     test: /[\\/]src[\\/]c[\\/]/,// 使用正则匹配
                //     // test: function(m) {
                //     //     console.log(m.context, /[\\/]src[\\/]b/.test(m.context));
                //     //     return /[\\/]src[\\/]b/.test(m.context)
                //     // },
                //     minChunks: 1,//敲黑板  最少被引用次数
                //     priority: -10,//优先级，先打包到哪个组里面，值越大，优先级越高
                //     reuseExistingChunk: true
                // },
            // }
        // },
        runtimeChunk: {
            name: 'manifest'
        }
    },
    output: {
        path: path.join(__dirname, "dist"),
        filename: "[name].js",
        // chunkFilename: '[name].d.js',// 块的名字
    }
};
